package GUI;
import java.awt.Color;
import java.awt.Font;
import java.awt.List;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;

import javax.swing.ImageIcon;

import com.domus.dreamMenu.cliente.core.Fachada;
import com.domus.dreamMenu.tipos.Prato;
import com.domus.dreamMenu.tipos.Tipo;

public class PanelTemplateGeral extends javax.swing.JPanel implements ActionListener{
	private javax.swing.JButton botaoFAZERpedido;
	private javax.swing.JButton botaoVOLTAR;
	private java.awt.Checkbox checkboxINGREDIENTE1;
	private java.awt.Checkbox checkboxINGREDIENTE2;
	private java.awt.Checkbox checkboxINGREDIENTE3;
	private java.awt.Checkbox checkboxINGREDIENTE4;
	private java.awt.Checkbox checkboxINGREDIENTE5;
	private javax.swing.JScrollPane jScrollPane2;
	private javax.swing.JTextPane descricaoObjeto;
	private javax.swing.JLabel labelFOTO;
	private javax.swing.JLabel labelNOMEdoPratoSelecionado;
	private javax.swing.JLabel labelTituloPrincipal;
	private java.awt.List listaObjetos;	
	private java.awt.Font fonteBotao;
	private java.awt.Font fonteTituloDoPrato;
	private java.awt.Font fonteTituloDaJanela;
	private java.awt.Font fonteDescricaoDoPrato;
	private java.awt.Font fonteDaListaDosPratos;
	private java.awt.Font fonteDasCheckBoxs;
	private java.awt.Color corDeFundoVermelha;
	private java.awt.Color corDaLinhaVerde;
	//private String tipoObjetoSelecionado;
	private JanelaPrincipal janela;
	private Tipo tiposDeSecao;
	private int secaoAtual;
	private ArrayList<Prato> arrayPratos; 
	
	
	public PanelTemplateGeral(int secaoSelecionada, JanelaPrincipal janela) {
		this.janela = janela;
		this.tiposDeSecao = new Tipo();
		this.secaoAtual = secaoSelecionada;
		this.getArrayObjetosArmazenados(janela);
		this.initComponents();
	}

	private void getArrayObjetosArmazenados(JanelaPrincipal janela) {
		this.arrayPratos = janela.getArrayProdutos(this.secaoAtual);
	}

	private void initComponents() {
		this.corDeFundoVermelha = new Color(193,9,9);
		this.corDaLinhaVerde = new Color(25,125,50);
		
		this.setLayout(null);
		this.setSize(1024,768);
		this.setMaximumSize(new java.awt.Dimension(1280, 1024));
		this.setMinimumSize(new java.awt.Dimension(1024, 768));
		this.setName("Form"); 
		this.setBackground(this.corDeFundoVermelha);
		
		this.exibirTituloPrincipal();
		this.exibirListaObjetos();
		this.exibirBotaoFazerPedido();
		
		if(this.listaObjetos.getItemCount()>0){
			this.listaObjetos.select(0);
			this.exibirNomeObjetoSelecionado(0);
			this.exibirFoto(0);//selecionar para exibir a foto do primeiro objeto selecionado!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
			this.exibirDescricaoObjetoSelecionado(0);
			this.exibirBotaoVoltar();
			this.exibirCheckBoxIngredientes(0);
		}
		this.addListenerNosObjetos();
		this.setVisible(true);
	}

	private void addListenerNosObjetos() {
		this.botaoFAZERpedido.addActionListener(this.janela);
		this.botaoVOLTAR.addActionListener(this.janela);
		this.listaObjetos.addActionListener(this);
	}

	private void exibirTituloPrincipal(){
		this.labelTituloPrincipal = new javax.swing.JLabel();
		int tamanhoFonte = 40;
		this.labelTituloPrincipal.setFont(new Font("Cooper Black",2,tamanhoFonte));
		this.labelTituloPrincipal.setText(this.tiposDeSecao.getStringDoValor(this.secaoAtual));
		this.labelTituloPrincipal.setBorder(javax.swing.BorderFactory.createCompoundBorder(null, javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)));
		this.labelTituloPrincipal.setName("labelTituloPrincipal");
		this.labelTituloPrincipal.setBounds(10, 15, (this.labelTituloPrincipal.getText().length()*((int)(tamanhoFonte/1.4))), 50);
		this.add(this.labelTituloPrincipal);
	}
	
	//EXIBIR LISTA DE PRODUTOS --- listar objetos pegos no BD
	private void exibirListaObjetos(){
		//this.listaObjetos = new java.awt.List();
		this.listaObjetos = new List();
		this.listaObjetos.setFont(new Font("Castellar",0,20));
		this.listaObjetos.setBackground(this.corDeFundoVermelha);
		this.listaObjetos.setName("listaObjetos");
		
		Prato prato;
		String exibicao;
		String preco;
		for(int i = 0; i < this.arrayPratos.size(); i++){
			prato = this.arrayPratos.get(i);
			exibicao = prato.getNome();
			preco = Float.toString(prato.getPreco());
			preco = preco.replace('.', ',');
			if(preco.length() == preco.indexOf(",") + 2)
				preco += "0";
			else if(preco.length() > preco.indexOf(",") + 2)
				preco = preco.substring(0, preco.indexOf(",") + 3);
				
			this.listaObjetos.add(exibicao + " (R$ " + preco + ")");
		}
		this.listaObjetos.setBounds(10, 100, 350, 300);
		this.add(this.listaObjetos);
	}
		
	private void exibirNomeObjetoSelecionado(int indice) {
	/*	try{
			this.remove(this.labelNOMEdoPratoSelecionado);
		}catch (Exception e) {
			
		}*/
		this.labelNOMEdoPratoSelecionado = new javax.swing.JLabel();
		this.labelNOMEdoPratoSelecionado.setFont(new Font("Castellar",0,20));
		this.labelNOMEdoPratoSelecionado.setText(this.arrayPratos.get(indice).getNome());
		this.labelNOMEdoPratoSelecionado.setBorder(javax.swing.BorderFactory.createCompoundBorder(null, javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)));
		this.labelNOMEdoPratoSelecionado.setName("labelTituloPrincipal");
		this.labelNOMEdoPratoSelecionado.setBounds(300, 15, 700, 50);
		this.add(this.labelNOMEdoPratoSelecionado);
	}

	public void exibirFoto(int indice){
		ImageIcon img = new ImageIcon(this.arrayPratos.get(indice).getFoto()); 
		img = new ImageIcon("fotoDoPratoPLANODEFUNDO.jpg", "aqui coloca uma foto do objeto");//remover essa linha pra poder aparecer a foto do prato!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
			
		this.labelFOTO = new javax.swing.JLabel();
		this.labelFOTO.setIcon(img); //aqui coloca a foto do prato!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		this.labelFOTO.setSize(img.getIconWidth(), img.getIconHeight());
		this.labelFOTO.setBackground(new Color(0,0,0));
		this.labelFOTO.setBorder(javax.swing.BorderFactory.createCompoundBorder(null, javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)));
		this.labelFOTO.setText("labelFOTO");
		if(this.labelFOTO.getIcon() != null)this.labelFOTO.setBorder(new javax.swing.border.LineBorder(this.corDaLinhaVerde, 5, true)); 
		this.labelFOTO.setName("labelFOTO");
		this.labelFOTO.setBounds(400, 100, 550, 300);
		this.add(this.labelFOTO);
	}	

	private void exibirDescricaoObjetoSelecionado(int indice) {
		this.descricaoObjeto = new javax.swing.JTextPane();
		this.descricaoObjeto.setBackground(this.corDeFundoVermelha);
		this.descricaoObjeto.setBorder(new javax.swing.border.LineBorder(new Color(255,255,255), 2, true));
		
		
		String textNoIdiomaAtual = Fachada.getNomeDescricaoDoPrato(secaoAtual-1)[indice];
		this.descricaoObjeto.setText(textNoIdiomaAtual);
		this.descricaoObjeto.setName("descricaoObjeto"); 
		this.descricaoObjeto.setFont(new Font("Lucida Sans",1,20));
		
		this.jScrollPane2 = new javax.swing.JScrollPane();
		this.jScrollPane2.setViewportView(descricaoObjeto);//coloca o scroll na descricao do texto
		
		this.descricaoObjeto.setBounds(10,420,450,210);
		this.add(this.descricaoObjeto);
	}
	
	private void exibirBotaoVoltar() {
		this.botaoVOLTAR = new javax.swing.JButton();
		this.botaoVOLTAR.setFont(new Font("Cooper Black", 1,20));
		this.botaoVOLTAR.setText("Voltar");
		this.botaoVOLTAR.setName("botaoVOLTAR");
		this.botaoVOLTAR.setBackground(new Color(255,255,255));
		this.botaoVOLTAR.setBounds(10, this.getSize().height-80, 150, 30);
		this.add(this.botaoVOLTAR);
	}

	private void exibirBotaoFazerPedido() {
		this.botaoFAZERpedido = new javax.swing.JButton();
		this.botaoFAZERpedido.setFont(new Font("Cooper Black", 1,20)); 
		this.botaoFAZERpedido.setText("Fazer pedido!"); 
		this.botaoFAZERpedido.setBackground(new Color(255,255,255));
		this.botaoFAZERpedido.setBounds(this.getSize().width - 250, this.getSize().height -80, 200, 30);
		this.botaoFAZERpedido.setName("botaoFAZERpedido"); 
		this.add(this.botaoFAZERpedido);
	}

	private void exibirCheckBoxIngredientes(int indice) {
		/**
		 * @TODO colocar um metodo pra avaliar como deve ser montado os checkboxs pra cada produto.
		 * */
		this.fonteDasCheckBoxs = new Font("Lucida Sans",2,20);
		this.checkboxINGREDIENTE1 = new java.awt.Checkbox();
		this.checkboxINGREDIENTE2 = new java.awt.Checkbox();
		this.checkboxINGREDIENTE3 = new java.awt.Checkbox();
		this.checkboxINGREDIENTE4 = new java.awt.Checkbox();
		this.checkboxINGREDIENTE5 = new java.awt.Checkbox();
		
		
		this.checkboxINGREDIENTE1.setFont(this.fonteDasCheckBoxs); 
		this.checkboxINGREDIENTE1.setLabel("nome do primeiro ingrediente");//aqui coloca o nome do primeiro ingrediente 
		this.checkboxINGREDIENTE1.setName("checkboxINGREDIENTE1");
		this.checkboxINGREDIENTE1.setState(true);

		this.checkboxINGREDIENTE2.setFont(this.fonteDasCheckBoxs); 
		this.checkboxINGREDIENTE2.setLabel("nome do segundo ingrediente"); 
		this.checkboxINGREDIENTE2.setName("checkboxINGREDIENTE2"); 
		this.checkboxINGREDIENTE2.setState(true);

		this.checkboxINGREDIENTE3.setFont(this.fonteDasCheckBoxs); 
		this.checkboxINGREDIENTE3.setLabel("nome do terceiro ingrediente"); 
		this.checkboxINGREDIENTE3.setName("checkboxINGREDIENTE3"); 
		this.checkboxINGREDIENTE3.setState(true);

		this.checkboxINGREDIENTE4.setFont(this.fonteDasCheckBoxs); 
		this.checkboxINGREDIENTE4.setLabel("nome do quarto ingrediente"); 
		this.checkboxINGREDIENTE4.setName("checkboxINGREDIENTE4"); 
		this.checkboxINGREDIENTE4.setState(true);

		this.checkboxINGREDIENTE5.setFont(this.fonteDasCheckBoxs); 
		this.checkboxINGREDIENTE5.setLabel("nome do quinto ingrediente"); 
		this.checkboxINGREDIENTE5.setName("checkboxINGREDIENTE5"); 
		this.checkboxINGREDIENTE5.setState(true);
		
		this.checkboxINGREDIENTE1.setBounds(470, 420, 400, 30);
		this.checkboxINGREDIENTE2.setBounds(470, 450, 400, 30);
		this.checkboxINGREDIENTE3.setBounds(470, 480, 400, 30);
		this.checkboxINGREDIENTE4.setBounds(470, 510, 400, 30);
		this.checkboxINGREDIENTE5.setBounds(470, 540, 400, 30);
		
		this.add(this.checkboxINGREDIENTE1);
		this.add(this.checkboxINGREDIENTE2);
		this.add(this.checkboxINGREDIENTE3);
		this.add(this.checkboxINGREDIENTE4);
		this.add(this.checkboxINGREDIENTE5);
		
		//if(!this.arrayProdutos[indice].getTemIngredientesRemoviveis()){
			this.checkboxINGREDIENTE1.setVisible(false);
			this.checkboxINGREDIENTE2.setVisible(false);
			this.checkboxINGREDIENTE3.setVisible(false);
			this.checkboxINGREDIENTE4.setVisible(false);
			this.checkboxINGREDIENTE5.setVisible(false);
		//}
		
	}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	public javax.swing.JButton getBotaoVOLTAR() {
		return botaoVOLTAR;
	}

	public void setBotaoVOLTAR(javax.swing.JButton botaoVOLTAR) {
		this.botaoVOLTAR = botaoVOLTAR;
	}

	public javax.swing.JButton getBotaoFAZERpedido() {
		return botaoFAZERpedido;
	}

	public void setBotaoFAZERpedido(javax.swing.JButton botaoFAZERpedido) {
		this.botaoFAZERpedido = botaoFAZERpedido;
	}

	public java.awt.Checkbox getCheckboxINGREDIENTE1() {
		return checkboxINGREDIENTE1;
	}

	public void setCheckboxINGREDIENTE1(java.awt.Checkbox checkboxINGREDIENTE1) {
		this.checkboxINGREDIENTE1 = checkboxINGREDIENTE1;
	}

	public java.awt.Checkbox getCheckboxINGREDIENTE2() {
		return checkboxINGREDIENTE2;
	}

	public void setCheckboxINGREDIENTE2(java.awt.Checkbox checkboxINGREDIENTE2) {
		this.checkboxINGREDIENTE2 = checkboxINGREDIENTE2;
	}

	public java.awt.Checkbox getCheckboxINGREDIENTE3() {
		return checkboxINGREDIENTE3;
	}

	public void setCheckboxINGREDIENTE3(java.awt.Checkbox checkboxINGREDIENTE3) {
		this.checkboxINGREDIENTE3 = checkboxINGREDIENTE3;
	}

	public java.awt.Checkbox getCheckboxINGREDIENTE4() {
		return checkboxINGREDIENTE4;
	}

	public void setCheckboxINGREDIENTE4(java.awt.Checkbox checkboxINGREDIENTE4) {
		this.checkboxINGREDIENTE4 = checkboxINGREDIENTE4;
	}

	public java.awt.Checkbox getCheckboxINGREDIENTE5() {
		return checkboxINGREDIENTE5;
	}

	public void setCheckboxINGREDIENTE5(java.awt.Checkbox checkboxINGREDIENTE5) {
		this.checkboxINGREDIENTE5 = checkboxINGREDIENTE5;
	}

	public javax.swing.JScrollPane getJScrollPane2() {
		return jScrollPane2;
	}

	public void setJScrollPane2(javax.swing.JScrollPane scrollPane2) {
		jScrollPane2 = scrollPane2;
	}

	public javax.swing.JTextPane getdescricaoObjeto() {
		return descricaoObjeto;
	}

	public void setdescricaoObjeto(
			javax.swing.JTextPane textPaneTEXTOdescricao) {
		descricaoObjeto = textPaneTEXTOdescricao;
	}

	public javax.swing.JLabel getLabelFOTO() {
		return labelFOTO;
	}

	public void setLabelFOTO(javax.swing.JLabel labelFOTO) {
		this.labelFOTO = labelFOTO;
	}

	public javax.swing.JLabel getLabelNOMEdoPratoSelecionado() {
		return labelNOMEdoPratoSelecionado;
	}

	public void setLabelNOMEdoPratoSelecionado(
			javax.swing.JLabel labelNOMEdoPratoSelecionado) {
		this.labelNOMEdoPratoSelecionado = labelNOMEdoPratoSelecionado;
	}

	public javax.swing.JLabel getlabelTituloPrincipal() {
		return labelTituloPrincipal;
	}

	public void setlabelTituloPrincipal(javax.swing.JLabel labelTituloPrincipal) {
		this.labelTituloPrincipal = labelTituloPrincipal;
	}

	public java.awt.List getlistaObjetos() {
		return listaObjetos;
	}

	public void setlistaObjetos(java.awt.List listaObjetos) {
		this.listaObjetos = listaObjetos;
	}

	public java.awt.Font getFonteBotao() {
		return fonteBotao;
	}

	public void setFonteBotao(java.awt.Font fonteBotao) {
		this.fonteBotao = fonteBotao;
	}

	public java.awt.Font getFonteTituloDoPrato() {
		return fonteTituloDoPrato;
	}

	public void setFonteTituloDoPrato(java.awt.Font fonteTituloDoPrato) {
		this.fonteTituloDoPrato = fonteTituloDoPrato;
	}

	public java.awt.Font getFonteTituloDaJanela() {
		return fonteTituloDaJanela;
	}

	public void setFonteTituloDaJanela(java.awt.Font fonteTituloDaJanela) {
		this.fonteTituloDaJanela = fonteTituloDaJanela;
	}

	public java.awt.Font getFonteDescricaoDoPrato() {
		return fonteDescricaoDoPrato;
	}

	public void setFonteDescricaoDoPrato(java.awt.Font fonteDescricaoDoPrato) {
		this.fonteDescricaoDoPrato = fonteDescricaoDoPrato;
	}

	public java.awt.Font getFonteDaListaDosPratos() {
		return fonteDaListaDosPratos;
	}

	public void setFonteDaListaDosPratos(java.awt.Font fonteDaListaDosPratos) {
		this.fonteDaListaDosPratos = fonteDaListaDosPratos;
	}

	public java.awt.Font getFonteDasCheckBoxs() {
		return fonteDasCheckBoxs;
	}

	public void setFonteDasCheckBoxs(java.awt.Font fonteDasCheckBoxs) {
		this.fonteDasCheckBoxs = fonteDasCheckBoxs;
	}

	public java.awt.Color getCorDeFundoVermelha() {
		return corDeFundoVermelha;
	}

	public void setCorDeFundoVermelha(java.awt.Color corDeFundoVermelha) {
		this.corDeFundoVermelha = corDeFundoVermelha;
	}

	public java.awt.Color getCorDaLinhaVerde() {
		return corDaLinhaVerde;
	}

	public void setCorDaLinhaVerde(java.awt.Color corDaLinhaVerde) {
		this.corDaLinhaVerde = corDaLinhaVerde;
	}

	public int getTipoObjetoSelecionado() {
		return this.secaoAtual;
	}

	public void setTipoObjetoSelecionado(int tipoObjetoSelecionado) {
		this.secaoAtual = tipoObjetoSelecionado;
	}

	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == this.listaObjetos){
			int indice = this.listaObjetos.getSelectedIndex();
			/*
			if(this.arrayProdutos[indice].getTemIngredientesRemoviveis()){
				String rem[] = this.arrayProdutos[indice].getIngredientesRemoviveis();
				int tamanho = rem.length;
				if(tamanho==1){
					this.checkboxINGREDIENTE1.setLabel(rem[0]);
					this.checkboxINGREDIENTE1.setVisible(true);
					this.checkboxINGREDIENTE2.setVisible(false);
					this.checkboxINGREDIENTE3.setVisible(false);
					this.checkboxINGREDIENTE4.setVisible(false);
					this.checkboxINGREDIENTE5.setVisible(false);
				}
				else if(tamanho ==2){
					this.checkboxINGREDIENTE1.setLabel(rem[0]);
					this.checkboxINGREDIENTE2.setLabel(rem[1]);
					this.checkboxINGREDIENTE1.setVisible(true);
					this.checkboxINGREDIENTE2.setVisible(true);
					this.checkboxINGREDIENTE3.setVisible(false);
					this.checkboxINGREDIENTE4.setVisible(false);
					this.checkboxINGREDIENTE5.setVisible(false);
				}
				else if(tamanho ==3){
					this.checkboxINGREDIENTE1.setLabel(rem[0]);
					this.checkboxINGREDIENTE2.setLabel(rem[1]);
					this.checkboxINGREDIENTE3.setLabel(rem[2]);
					this.checkboxINGREDIENTE1.setVisible(true);
					this.checkboxINGREDIENTE2.setVisible(true);
					this.checkboxINGREDIENTE3.setVisible(true);
					this.checkboxINGREDIENTE4.setVisible(false);
					this.checkboxINGREDIENTE5.setVisible(false);
				}else if(tamanho ==4){
					this.checkboxINGREDIENTE1.setLabel(rem[0]);
					this.checkboxINGREDIENTE2.setLabel(rem[1]);
					this.checkboxINGREDIENTE3.setLabel(rem[2]);
					this.checkboxINGREDIENTE4.setLabel(rem[3]);
					this.checkboxINGREDIENTE1.setVisible(true);
					this.checkboxINGREDIENTE2.setVisible(true);
					this.checkboxINGREDIENTE3.setVisible(true);
					this.checkboxINGREDIENTE4.setVisible(true);
					this.checkboxINGREDIENTE5.setVisible(false);
				}
				else if(tamanho ==5){
					this.checkboxINGREDIENTE1.setLabel(rem[0]);
					this.checkboxINGREDIENTE2.setLabel(rem[1]);
					this.checkboxINGREDIENTE3.setLabel(rem[2]);
					this.checkboxINGREDIENTE4.setLabel(rem[3]);
					this.checkboxINGREDIENTE5.setLabel(rem[4]);
					this.checkboxINGREDIENTE1.setVisible(true);
					this.checkboxINGREDIENTE2.setVisible(true);
					this.checkboxINGREDIENTE3.setVisible(true);
					this.checkboxINGREDIENTE4.setVisible(true);
					this.checkboxINGREDIENTE5.setVisible(true);
				}	
			}else{
				this.checkboxINGREDIENTE1.setVisible(false);
				this.checkboxINGREDIENTE2.setVisible(false);
				this.checkboxINGREDIENTE3.setVisible(false);
				this.checkboxINGREDIENTE4.setVisible(false);
				this.checkboxINGREDIENTE5.setVisible(false);
			}*/
			//this.descricaoObjeto.setText(this.arrayPratos.get(indice).getDescricoesCompletas()[0]);
			this.labelFOTO.setIcon(new ImageIcon(this.arrayPratos.get(indice).getFoto()));
			this.labelNOMEdoPratoSelecionado.setText(this.arrayPratos.get(indice).getNome());
			exibirDescricaoObjetoSelecionado(indice);
			//this.exibirNomeObjetoSelecionado(indice);
			//System.out.println("entrou aqui");
		}
		
	}
	public int getCodigoPedidoSelecionado() {
		int selecao = this.listaObjetos.getSelectedIndex();
		
		return this.arrayPratos.get(selecao).getCodigo();
	}
}
